The background description provided herein is for the purpose of generally presenting the context of the disclosure. Unless otherwise indicated herein, the materials described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Traditional live migrations of virtual machines (VM) typically involve incremental migration of memory content, because the cost of migrating an entire system memory is large and impractical. It is not endurable to stall the whole system for a prolonged period of time to enable the entire system memory to be migrated. Instead, systems usually migrates only the modified portion of the memory over several iterations, while the system is still running During that period, newly marked memory pages are marked as “dirty,” and migrated in a subsequent iteration.
Recent advances in virtualization and graphics technology have enabled more efficient graphics virtualization among multiple VMs on host computers. Advanced graphics virtualization now often supports native graphics driver running inside the VMs to enable user applications of the VMs to have accesses to the full range of graphics capabilities supported by the graphics processing units (GPU) of the host computers. Often, a GPU device model is implemented inside the virtual machine monitor (VMM) of a host computer to emulate the accesses of GPU resources like memory mapped input-output (MMIO). The GPU is able to manipulate system memory of the host computer when processing the GPU commands, and the manipulation of the system memory is not known to the memory manager of the VMM.
Resultantly, prior art live migration of VMs no longer works when the latest GPU virtualization is involved. Further, migrations become even more complicated when the target host computers of live migration have GPUs that are different from the GPUs of the source host computers of live migration. Traditional live migration approach cannot handle such live migrations, since the states for the two GPUs of the source and target host computers do not exactly match.